Most computer graphics devices currently available are very efficient at rendering points, lines, and polygons. Some even support more complex surfaces, but when it comes to rendering volumetric objects such as smoke or clouds, the application developer is often left to develop unique solutions.
Beginning in the early 1980's, various approaches have been developed for rendering volumetric obscurants. William T. Reeves introduced particle systems in 1983. James Kajiya published an approach using ray tracing in 1984. Geoffrey Y. Gardner discussed a method of rendering clouds using textured ellipsoids. David S. Ebert and Richard E. Parent combined volumetric techniques with the popular Scanline A-buffer in 1990. Richard Voss developed a technique based upon fractals, while Nelson Max used height fields. In 1991, Rick D. Bess and Brian T. Soderberg developed a technique specifically for the simulation of smoke on the battlefield.
While not an exhaustive list of approaches, it is clear that there are numerous methods for rendering volumetric obscurants. Because of the complexity of the volumetric phenomenon, there has not yet been a single algorithm that is cost effective, efficient, and visually sufficient for all graphics applications. Particle systems create very realistic results, but a large quantity of particles is required. Consequently, a particle system approach may be fine for non-time-critical applications, but it is not appropriate for many real-time or interactive applications. Ray tracers also produce good results, but hardware accelerators are not commonly available. Thus, many applications simply do their best to simulate volumetric effects using points, lines, or polygons, since low cost graphics devices are readily available which efficiently handle these primitives.
Polygons with textures can be used to render very realistic looking clouds in the distance, but as the eye position or other objects get near or even penetrate the volume, the illusion starts to fall apart. Not only should the object ‘look’ like a cloud, it preferably will ‘behave’ like a cloud to complete the illusion. For example, polygonal techniques work fine when an observer views an object that is in front of a cloud or fully behind a cloud, but as an object penetrates a cloud, the volumetric nature of the cloud must be properly accounted for. The portions of the object near the front (as seen from the observer's position) of the cloud may be mostly visible, while more distant portions of the object may be mostly or even totally obscured. Maintaining this volumetric behavior can enhance the realism of rendered scenes.
It is common practice to use a single polygon with a texture pattern to simulate complex objects. Certain classes of polygons are processed such that they always face the observer. These polygons are often referred to as ‘stamps’, ‘splats’, or ‘imposters’. This technique can be very effective for the simulation of distant clouds and other volumetric effects. Each cloud puff can comprise a single polygon with a texture pattern. From a distance, a polygon image with a texture can be fairly realistic looking. However, if an object moves through what should be a volumetric obscurant, such as a cloud that is simulated with a two dimensional polygon, it will become apparent as the object moves through the cloud stamp that each cloud puff is really just a flat billboard-like polygon.
For example, as an aircraft penetrates a polygon with a texture pattern designed to simulate a cloud, a portion of the aircraft is in front of and a portion behind the polygon. Instead of a volumetric obscuration of the aircraft, the polygon will cause a hard, planar interpenetration. The portion of the aircraft in front of the polygon will be fully visible while that portion lying behind may be totally obscured. This hard edge will be readily apparent to a viewer, giving away the polygonal structure of the cloud and breaking the illusion of a volumetric cloud. Of course, the situation can be improved by using more polygons. Unfortunately, to achieve high quality results you have to use a very large number of small polygons, which in the limit is a particle system.